The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.
Traditional approaches for versioning a software product during the product's design, development, and deployment phases require a software developer to set up a versioning environment. The software developer typically sets up the versioning environment by choosing which modules, data and code files, and other product components to version and by determining a schedule according to which the various components of the software product are to be versioned. As a result of the software developer's choices and to the extent thereto, the versioning environment may be used to determine and track various versions of the software product, including any test versions, beta versions, and release versions.
In a typical example, a team of software developers would use an Integrated Development Environment (IDE) system to develop a software product, and the IDE system would provide versioning functionality in the form of a versioning add-on module. To set up versioning for the software product, a software developer (typically a team leader or a project manager) would enter in the versioning add-on module all information that is necessary to define when, how, and what components of the software product would be versioned. As a result, the team of software developers would be able to track various versions of their software product during the design, development, testing, and release phases of the product's life-cycle.
The traditional approaches for versioning of software products, however, do not work well when used in conjunction with two recent trends in computing—mashups and On-Demand delivery of software. In general, a mashup is a composite application that is operable to integrate and present data provided by multiple external sources such as, for example, web services. On-Demand delivery of software (also known as Software as a Service, or SaaS) refers to a software delivery model where software vendors provide software capabilities on a subscription basis through software services, which are hosted by the vendors and which can be accessed by various subscribers when needed. For example, SaaS applications may be delivered to subscribers through web browsers, thus allowing the software vendors to host the underlying services and to benefit from the economies of scale. The SaaS model provides a good environment for the delivery and use of various types of mashups because mashups typically interact with external services, many of which can be provided on-demand.
One disadvantage of using the traditional versioning approaches for mashups is that these traditional approaches require access to the entire software product being developed in order to ensure consistency and integrity between the various components and versions of the product. However mashups, especially mashups deployed in a SaaS model, rely extensively on external services over which the mashup developers have no control. Thus, a mashup developer would not be able to set up a stable versioning environment for her mashup because the developer would simply lack the knowledge necessary to reflect any versioning dependencies dictated by the external services. For example, since changes in even one external service accessed by the mashup are likely cause the mashup to break, and since the mashup developer has no knowledge of or control over these changes, any prior versions of the mashup are likely to be useless.
Another disadvantage of using the traditional versioning approaches for mashups in SaaS models is that the traditional versioning approaches typically require very complicated setups, which can only be accomplished by sophisticated users such as software developers. However, mashups can be fairly easily designed and developed by unsophisticated software users such as business users. The reason for this is that many software vendors provide user-friendly and easy-to-use development tools that expose SaaS and other web services, and allow the rapid development of mashups that integrate and present various data from these services. Thus, a business user using such a development tool may be able to easily and rapidly develop a mashup, but will not be able to version the mashup because setting up a versioning environment would require technical knowledge which the business user is unlikely to have.
The disadvantages of the traditional versioning approaches described herein are not unique to any particular types of mashups or to any particular types of services. Rather, similar disadvantages are encountered for various types of mashups, such as data mashups, presentation mashups, and business mashups, and for various types of services, such as web services and enterprise intranet services.